package com.itlong.cloud.dao;

import com.itlong.cloud.POJO.PO.TimeTaskDeadMessageQueuePO;
import com.itlong.cloud.abstracts.IAbstractBaseDao;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      信息队列数据底层交互。
 * </desc>
 *
 * @createDate 2017/11/16
 */
@Mapper
@Repository
public interface ITimeTaskDeadMessageQueueDao extends IAbstractBaseDao<TimeTaskDeadMessageQueuePO> {

    /**
     * <desc>
     *      保存
     * </desc>
     *
     * @param params 数据参数
     * @return sql执行行数
     * @author Wenchao.L
     * @createDate 2017/11/16
     */
    Integer save(Map<String, Object> params);

    /**
     * <desc>
     *      更新
     * </desc>
     *
     * @param param
     * @return
     * @author Jiaqi.X
     * @createDate 2017/11/29
     */
    Integer update(Map<String, Object> param);

    /**
     * <desc>
     *      获取分页数据集
     * </desc>
     *
     * @param params 查询参数
     * @return  分页数据集
     * @author Jiaqi.X
     * @createDate 2017/11/29
     */
    List<TimeTaskDeadMessageQueuePO> getPageList(Map<String, Object> params);
    /**
     * <desc>
     *      获取分页总数量
     * </desc>
     *
     * @param params 查询参数
     * @return 总数量
     * @author Jiaqi.X
     * @createDate 2017/11/29
     */
    Integer getPageCount(Map<String, Object> params);

    /**
     * <desc>
     *      获取需要重发的死信队列
     * </desc>
     *
     * @return
     * @author Jiaqi.X
     * @createDate 2018/01/27
     */
    List<TimeTaskDeadMessageQueuePO> getRedirectDeadMessages();

    /**
     * <desc>
     *      检测消息唯一id是否已存在
     * </desc>
     *
     * @param correlationId 消息唯一id
     * @return
     * @authro Jiaqi.X
     * @createDate 2018/01/27
     */
    Integer checkCorrelationId(@Param("correlationId") String correlationId);

    /**
     * <desc>
     *      设置消费状态为未消费
     * </desc>
     *
     * @return
     * @author Jiaqi.X
     * @createDate 2018/01/27
     */
    Integer setMessageStatusError(@Param("correlationId") String correlationId);
}
